# 注解类型用于提示变量、参数、返回值等，是什么类型的数据
# 但因为Python是弱类型语言，这些注解不会强制执行类型检查，
# 不满足注解类型的数据也不会报错，作用主要是提高代码的可读性和对IDE的支持(自动补全等)


# 变量类型注解
name: str = "Alice"
age: int = 25
is_student: bool = True



# 函数类型注解
def greet(name: str) -> list[str]:
    return [f"Hello, {name}!"]

def add(a: int, b: int) -> int:
    return a + b

# 注意这里的返回类型是个元组，包含两个浮点数。 
# 它不能用小括号括起来，因为这是注解的语法要求，而不是tuple的定义方式,比如 t=(1.1,2.2)
def get_coordinates() -> tuple[float, float]:
    return (12.34, 56.78)

# 类和方法类型注解
class Person:
    def __init__(self, name: str, age: int) -> None:
        self.name: str = name
        self.age: int = age

    def get_info(self) -> str:
        return f"{self.name} is {self.age} years old."

# 使用示例
print(greet(name))
print(greet(123))  # 故意传入错误类型以测试类型注解，不会报错
print(add(10, 20))
print(get_coordinates())

person = Person("Bob", 30)
print(person.get_info())
